package com.xingkeduo.business.user.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.xingkeduo.dao.database.DatabaseAccessObject;
import com.xingkeduo.pojo.query.CraftsmanTraceQO;
import com.xingkeduo.pojo.table.CraftsmanTraceTO;
import com.xingkeduo.util.pojo.exception.DataException;
import com.xingkeduo.util.tool.CommonUtil;
import com.xingkeduo.util.tool.IdentityUtil;
import com.xingkeduo.util.tool.IdentityUtil.Worker;

/**
 * 一线员工跟踪封装类
 * 
 * @author 高杰
 * @time 2018年12月25日 下午1:42:07
 * @description
 */
@Component
public class CraftsmanTraceService {
	private static final String NAMESPACE = CommonUtil.formatNamespace(CraftsmanTraceTO.class);
	@Resource(name = "mysqlUserMasterDao")
	private DatabaseAccessObject<CraftsmanTraceTO, CraftsmanTraceQO> dao;

	/**
	 * 查询
	 * 
	 * @author 高杰
	 * @time 2018年12月26日 下午6:26:11
	 * @param code
	 * @return
	 * @throws Throwable
	 */
	public CraftsmanTraceTO selectByPrimary(long id) throws Throwable {
		return dao.select(NAMESPACE, id);
	}

	/**
	 * 查询
	 * 
	 * @author 高杰
	 * @time 2018年12月26日 下午6:26:11
	 * @param code
	 * @return
	 * @throws Throwable
	 */
	public List<CraftsmanTraceTO> selectByLogin(String login) throws Throwable {
		CraftsmanTraceQO query = new CraftsmanTraceQO().setLogin(login);
		return selectByQuery(query);
	}

	/**
	 * 查询
	 * 
	 * @author 高杰
	 * @time 2019年1月8日 下午2:22:21
	 * @param query
	 * @return
	 * @throws Throwable
	 */
	public List<CraftsmanTraceTO> selectByQuery(CraftsmanTraceQO query) throws Throwable {
		return dao.select(NAMESPACE, query);
	}

	/**
	 * 查询总数
	 * 
	 * @author 高杰
	 * @time 2019年1月9日 下午5:06:44
	 * @param query
	 * @return
	 * @throws Throwable
	 */
	public int count(CraftsmanTraceQO query) throws Throwable {
		return dao.selectCount(NAMESPACE, query);
	}

	/**
	 * 添加
	 * 
	 * @author 高杰
	 * @time 2018年12月27日 上午11:13:21
	 * @param craftsman
	 * @return
	 * @throws Throwable
	 */
	@Transactional
	public void insert(CraftsmanTraceTO table) throws Throwable {
		if (dao.insert(NAMESPACE, table.initId(IdentityUtil.nextId(Worker.USER))) < 1)
			throw new DataException(DataException.Type.FAIL, "一线员工跟踪信息");
	}

	/**
	 * 修改
	 * 
	 * @author 高杰
	 * @time 2018年12月27日 上午11:37:28
	 * @param craftsman
	 * @return
	 * @throws Throwable
	 */
	@Transactional
	public void update(CraftsmanTraceTO table) throws Throwable {
		if (dao.update(NAMESPACE, table) < 1)
			throw new DataException(DataException.Type.FAIL, "一线员工跟踪信息");
	}
}
